package cn.hzy.admin.controller;

import cn.hzy.toolkit.ApiResult;
import cn.hzy.toolkit.annotation.HzyAuthorization;

/**
 * <p>
 * 前端控制器
 * </p>
 *
 * @author hzy
 * @since 2020-04-26
 */
@HzyAuthorization
public class BaseController {

    /**
     * 模板路径前缀
     */
    private String viewPrefix = "";

    public BaseController() {
    }

    public BaseController(String _prefix) {
        this.viewPrefix = _prefix;
    }

    /**
     * 返回视图目录
     *
     * @param viewName
     * @return String
     */
    protected String view(String viewName) {
        return this.viewPrefix + viewName;
    }

    /**
     * 返回视图目录
     *
     * @param viewPrefix
     * @param viewName
     * @return String
     */
    protected String view(String viewPrefix, String viewName) {
        return viewPrefix + viewName;
    }

    /**
     * 重定向
     * 返回视图目录
     *
     * @return
     */
    protected String viewRedirect(String viewName) {
        return "redirect:" + this.viewPrefix + viewName;
    }

    /**
     * @param status
     * @param msg
     * @return
     */
    protected ApiResult result(int status, String msg) {
        return ApiResult.result(status, msg);
    }

    /**
     * @param status
     * @param data
     * @return
     */
    protected ApiResult result(int status, Object data) {
        return ApiResult.result(status, data);
    }

    /**
     * @param status
     * @param msg
     * @param data
     * @return
     */
    protected ApiResult result(int status, String msg, Object data) {
        return ApiResult.result(status, msg, data);
    }

    /**
     * @param status
     * @param msg
     * @return
     */
    protected ApiResult result(ApiResult.StatusCodeEnum status, String msg) {
        return ApiResult.result(status, msg);
    }

    /**
     * @param status
     * @param data
     * @return
     */
    protected ApiResult result(ApiResult.StatusCodeEnum status, Object data) {
        return ApiResult.result(status, data);
    }

    /**
     * @param status
     * @param msg
     * @param data
     * @return
     */
    protected ApiResult result(ApiResult.StatusCodeEnum status, String msg, Object data) {
        return ApiResult.result(status, msg, data);
    }

    /**
     * @return
     */
    protected ApiResult resultOk() {
        return ApiResult.resultOk();
    }

    /**
     * @param msg
     * @return
     */
    protected ApiResult resultOk(String msg) {
        return ApiResult.resultOk(msg);
    }

    /**
     * @param data
     * @return
     */
    protected ApiResult resultOk(Object data) {
        return ApiResult.resultOk(data);
    }

    /**
     * @param msg
     * @param data
     * @return
     */
    protected ApiResult resultOk(String msg, Object data) {
        return ApiResult.resultOk(msg, data);
    }

    /**
     * @return
     */
    protected ApiResult resultWarn() {
        return ApiResult.resultWarn();
    }

    /**
     * @param msg
     * @return
     */
    protected ApiResult resultWarn(String msg) {
        return ApiResult.resultWarn(msg);
    }

    /**
     * @param data
     * @return
     */
    protected ApiResult resultWarn(Object data) {
        return ApiResult.resultWarn(data);
    }

    /**
     * @param msg
     * @param data
     * @return
     */
    protected ApiResult resultWarn(String msg, Object data) {
        return ApiResult.resultWarn(msg, data);
    }

}
